/**
 * 掘金微热榜数据服务
 * 负责获取和处理掘金热榜数据
 */

// Gitee仓库JSON文件基础URL
const GITEE_BASE_URL = 'https://gitee.com/coder-pig/juejin_file_save/raw/master/hot_articles/';

// 分类映射数据
const CATEGORY_MAP = {
    '综合': '1',
    '后端': '6809637769959178254',
    '前端': '6809637767543259144',
    'Android': '6809635626879549454',
    'iOS': '6809635626661445640',
    '人工智能': '6809637773935378440',
    '开发工具': '6809637771511070734',
    '代码人生': '6809637776263217160',
    '阅读': '6809637772874219534'
};

// 本地代理服务器URL
const LOCAL_PROXY_URL = '/api/gitee/';

/**
 * 获取掘金热榜文章
 * @param {string} categoryId - 分类ID
 * @returns {Promise<Array>} - 文章数据数组
 */
async function fetchHotArticles(categoryId = '1') {
    // 尝试不同的数据源
    const dataSources = [
        // 首先尝试直接从Gitee获取JSON数据
        `${GITEE_BASE_URL}${categoryId}.json`,
        // 然后尝试使用本地代理（如果有）
        `${LOCAL_PROXY_URL}${categoryId}.json`
    ];
    
    let lastError = null;
    
    // 依次尝试不同的数据源
    for (const dataSource of dataSources) {
        try {
            console.log(`尝试从 ${dataSource} 获取数据...`);
            
            // 发送请求
            const response = await fetch(dataSource, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json',
                    // 添加额外的请求头以绕过一些限制
                    'X-Requested-With': 'XMLHttpRequest'
                },
                // 设置较短的超时时间
                signal: AbortSignal.timeout(5000)
            });
            
            // 检查响应状态
            if (!response.ok) {
                throw new Error(`数据请求失败: ${response.status} ${response.statusText}`);
            }
            
            // 解析响应数据
            const articles = await response.json();
            
            // 检查数据格式
            if (!articles || !Array.isArray(articles)) {
                throw new Error('返回数据格式不正确');
            }
            
            console.log(`成功从 ${dataSource} 获取到 ${articles.length} 条文章数据`);
            
            // 直接返回数据，因为Gitee上的JSON已经是处理好的格式
            return articles;
        } catch (error) {
            console.error(`尝试使用 ${dataSource} 获取数据失败:`, error);
            lastError = error;
            // 继续尝试下一个数据源
            continue;
        }
    }
    
    // 所有数据源都失败了，抛出最后一个错误
    console.error('所有数据源都请求失败，使用本地数据');
    throw lastError || new Error('无法获取掘金热榜数据');
}

/**
 * 处理文章数据
 * @param {Array} articles - 原始文章数据
 * @returns {Array} - 处理后的文章数据
 */
function processArticleData(articles) {
    if (!articles || !Array.isArray(articles)) {
        return [];
    }
    
    return articles.map((article, index) => {
        // 提取文章信息
        const {
            article_id,
            article_info,
            author_user_info,
            category,
            tags,
            content_counter
        } = article;
        
        // 构建标准化的文章对象
        return {
            content_id: article_id,
            title: article_info?.title || '',
            ai_title: article_info?.brief_content || article_info?.title || '',
            ai_desc: article_info?.brief_content || '',
            author_id: author_user_info?.user_id || '',
            author_name: author_user_info?.user_name || '',
            content_url: `https://juejin.cn/post/${article_id}`,
            like: content_counter?.digg_count || 0,
            view: content_counter?.view_count || 0,
            comment_count: content_counter?.comment_count || 0,
            collect: content_counter?.collect_count || 0,
            order: index + 1 // 使用索引作为排序依据
        };
    });
}

/**
 * 获取本地示例数据
 * @returns {Array} - 示例文章数据
 */
function getLocalData() {
    // 示例数据，与API返回格式一致
    return [
        {
            "ai_desc": "2025年5月30日，由rolldown驱动的vite，rolldown-vite正式内测。作者用前端项目实测，替换后编译打包4231个文件，操作10次，打包性能提升约2倍，暂未发现问题，可供尝鲜。",
            "ai_title": "实测：下一代Vite速度快一倍",
            "author_id": "1028798615918983",
            "author_name": "粥里有勺糖",
            "collect": 0,
            "comment_count": 0,
            "content_id": "7510477725476339766",
            "content_url": "https://juejin.cn/post/7510477725476339766",
            "like": 1,
            "order": 9,
            "title": "视野修炼-技术周刊第121期 | Rolldown-Vite",
            "view": 79
        },
        {
            "ai_desc": "2025年5月30日，由rolldown驱动的vite（rolldown-vite）正式内测。作者用前端项目实测，替换后编译打包4231个文件，操作10次，打包性能提升约2倍，暂未发现问题。",
            "ai_title": "实测：下一代Vite速度快一倍",
            "author_id": "2865758605422890",
            "author_name": "无限大6",
            "collect": 1,
            "comment_count": 1,
            "content_id": "7510136999422574644",
            "content_url": "https://juejin.cn/post/7510136999422574644",
            "like": 0,
            "order": 10,
            "title": "《计算机十万个为什么》之前端与后端",
            "view": 74
        },
        {
            "ai_desc": "Flutter官方多窗口体验，为什么Flutter推进那么慢？作者分析了Flutter多窗口支持的历史、现状和未来发展方向。",
            "ai_title": "Flutter官方多窗口体验，为什么Flutter推进那么慢？",
            "author_id": "3702810894158350",
            "author_name": "Flutter社区",
            "collect": 5,
            "comment_count": 3,
            "content_id": "7510477725476339123",
            "content_url": "https://juejin.cn/post/7510477725476339123",
            "like": 10,
            "order": 1,
            "title": "Flutter官方多窗口体验",
            "view": 1431
        },
        {
            "ai_desc": "想做运维工作？这些技术栈和思维模式你必须掌握。作者分享了运维工程师的核心技能和发展路径。",
            "ai_title": "想做运维工作？这些技术栈和思维模式你必须掌握",
            "author_id": "4309256547635742",
            "author_name": "Moment",
            "collect": 8,
            "comment_count": 5,
            "content_id": "7510136999422574789",
            "content_url": "https://juejin.cn/post/7510136999422574789",
            "like": 15,
            "order": 2,
            "title": "想做运维工作？这些技术栈和思维模式你必须掌握",
            "view": 1143
        },
        {
            "ai_desc": "腾讯ovCompose开源，Kuikly鸿蒙和Compose DSL对比分析。作者详细介绍了两种UI框架的异同和优缺点。",
            "ai_title": "腾讯ovCompose开源，Kuikly鸿蒙和Compose DSL对比分析",
            "author_id": "3702810894158351",
            "author_name": "多端开发社区",
            "collect": 7,
            "comment_count": 4,
            "content_id": "7510477725476339456",
            "content_url": "https://juejin.cn/post/7510477725476339456",
            "like": 12,
            "order": 3,
            "title": "腾讯ovCompose开源，Kuikly鸿蒙和Compose DSL对比分析",
            "view": 1035
        },
        {
            "ai_desc": "我用54000分钟打造的后台系统模板，开源了！作者分享了一个功能完善的后台管理系统开源项目。",
            "ai_title": "我用54000分钟打造的后台系统模板，开源了！",
            "author_id": "4309256547635743",
            "author_name": "探索先生TT",
            "collect": 6,
            "comment_count": 2,
            "content_id": "7510136999422574890",
            "content_url": "https://juejin.cn/post/7510136999422574890",
            "like": 8,
            "order": 4,
            "title": "我用54000分钟打造的后台系统模板，开源了！",
            "view": 1026
        }
    ];
}

// 导出模块接口
export { fetchHotArticles, getLocalData, CATEGORY_MAP };